Oil painting stroke simulation using neural network

ABSTRACT

Oil painting simulation techniques are disclosed which simulate painting brush strokes using a trained neural network. In some examples, a method may include inferring a new height map of existing paint on a canvas after a new painting brush stroke is applied based on a bristle trajectory map that represents the new painting brush stroke and a height map of existing paint on the canvas prior to the application of the new painting brush stroke, and generating a rendering of the new painting brush stroke based on the new height map of existing paint on the canvas after the new painting brush stroke is applied to the canvas and a color map.

REFERENCE TO PRIOR APPLICATION

This application is a continuation of U.S. patent application Ser. No.15/814,751 (filed 16 Nov. 2017), the entire disclosure of which ishereby incorporated by reference herein.

FIELD OF THE DISCLOSURE

This disclosure relates generally to painting simulation, and moreparticularly, to simulation of oil painting brush strokes using neuralnetworks.

BACKGROUND

Paint simulation programs have been developed that simulate artistic oilpainting on a computer. Conventional oil paint simulation programstypically provide a virtual paint brush for use by an artist to paint(create a painting) on a digital canvas. These programs attempt tosimulate the texture of oil paints, and the manner in which the bristlesof the paint brush smear the oil paint across the canvas. Many oil paintsimulation programs model oil painting brush strokes by stamping apre-defined 2D brush imprint along a brush stroke path, and simulatepaint transfer between the brush stroke and the canvas using pickupmaps. In these simulations, the paint is often represented in 2D.However, a real, physical oil painting does not look like a flat 2Dimage. The paint in a physical oil painting has depth and texture. As aresult, many of the conventional paint simulation programs are unable torealistically model real paint brush strokes used in physical oilpaintings.

Realistic representation of surface thickness of oil paints on a canvasis necessary to simulate artistic oil painting on a computer. Suchrepresentation refers to the thickness of applied oil paint that extendsabove the canvas surface in the z-direction (coming out of canvas).Realistically representing the surface thickness of oil paints requiresmodeling of realistic oil painting brush strokes. As mentioned above,one approach to model oil painting brush strokes is to stamp pre-defined2D brush imprints and simulate the paint transfer between the brushstroke and the canvas. Unfortunately, modeling oil painting brushstrokes in this manner produces low quality representations of the 3Dsurface details of brush strokes and, accordingly, low qualitysimulations of an oil painting.

Another approach to model oil painting brush strokes is to simulate manyhundreds or even thousands of individual bristles of a paint brush, andthe interaction among the bristles to generate accurate brush shape.Although this approach produces higher quality representations of the 3Dsurface details of brush strokes, this approach unfortunately requiresthe use of complex fluid simulation. As such, this approach iscomputationally very expensive (which also increases power consumption)and not feasible for computing devices that lack the necessary computingpower, such as mobile computers and mobile devices, to name a fewexamples.

Other possible approaches include data-driven, texture synthesisapproaches to model oil painting brush strokes. These approachestypically involve collecting a corpus of example brush stroke segments,usually from photographs of real brush strokes. Then, for an inputpainting brush stroke, the example brush stroke segments are identifiedthat closest match the input stroke path shapes, and optimization isperformed to seamlessly connect the identified example brush strokesegments. Unfortunately, these approaches often produce repeatedpatterns or otherwise limited patterns that do not capture the full setof dynamics and variations of a real brush stroke.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings are not intended to be drawn to scale. In thedrawings, each identical or nearly identical component that isillustrated in various figures is represented by a like numeral, as willbe appreciated when read in context.

FIG. 1 is a diagram illustrating example components for generatingtraining data for a neural network, in accordance with at least someembodiments described herein.

FIG. 2 is a diagram illustrating example training data inputs to aneural network, in accordance with at least some embodiments describedherein.

FIG. 3 is a block diagram schematically illustrating an example strokegeneration system employing a single neural network, in accordance withat least some embodiments described herein.

FIG. 4 is a block diagram schematically illustrating the example strokegeneration system of FIG. 3 employing multiple instances of a trainedneural network, in accordance with at least some embodiments describedherein.

FIG. 5 is a block diagram schematically illustrating multiple bristletrajectory map segments and corresponding height map segments generatedby multiple trained neural networks, in accordance with at least someembodiments described herein.

FIG. 6 is a flow diagram illustrating an example process to render a newpainting brush stroke, in accordance with at least some embodimentsdescribed herein.

FIG. 7 illustrates selected components of an example computing systemthat may be used to perform any of the techniques as variously describedin the present disclosure, in accordance with at least some embodimentsdescribed herein.

In the following detailed description, reference is made to theaccompanying drawings, which form a part hereof. In the drawings,similar symbols typically identify similar components, unless contextdictates otherwise. The illustrative embodiments described in thedetailed description, drawings, and claims are not meant to be limiting.Other embodiments may be used, and other changes may be made, withoutdeparting from the spirit or scope of the subject matter presentedherein. The aspects of the present disclosure, as generally describedherein, and illustrated in the Figures, can be arranged, substituted,combined, separated, and designed in a wide variety of differentconfigurations, all of which are explicitly contemplated herein.

DETAILED DESCRIPTION

Techniques are disclosed herein for simulation of oil painting brushstrokes using a neural network that is specifically trained based on aso-called height map indicative of existing paint on a canvas, as willbe further explained in turn. The simulation of oil painting brushstrokes provides a realistic reconstruction of the surface thickness ofthe oil paint, which is utilized to provide a high quality, realisticsimulation of an oil painting. According to an embodiment, the neuralnetwork is trained using supervised learning to infer a function from alarge number of training data sets. In more detail, each training dataset is comprised of a height map of existing paint on a canvas, abristle trajectory map that represents a painting brush stroke, and aground truth, which is the expected height map resulting from applyingthe painting brush stroke to the existing paint on the canvas. Oncetrained, the objective of a trained neural network is to infer, for agiven height map of existing paint on a canvas and a bristle trajectorymap representing a new painting brush stroke, a height map of paint onthe canvas after the new painting brush stroke is applied to the canvas.That is, the trained neural network infers the new paint on the canvasresulting from applying a new painting brush stroke to the paint thatwas on the canvas prior to the new painting brush stroke. In someembodiments, the neural network is a convolutional neural network.

In some embodiments, a high quality oil painting simulator is utilizedto generate the training data sets to use in training a neural network.The simulator utilizes a 3D volumetric fluid simulation to simulate thepaint medium, such as the oil paint, on a digital canvas. To generate atraining data set, a height map of existing paint on a canvas and apainting brush stroke are input to the simulator, which in turngenerates a ground truth based on the input height map and paintingbrush stroke pair. The simulator also generates a bristle trajectory mapof the of the input painting brush stroke. The training data set iscomprised of the height map input to the simulator and the bristletrajectory map and the ground truth generated by the simulator.

In some embodiments, an oil painting brush stroke is simulated using oneor more instances of a trained neural network. For example, a singlelong oil painting brush stroke may be segmented into multiple oilpainting brush stroke segments, and each oil painting brush strokesegment processed by a respective instance of the trained neuralnetwork. In such cases, the objective of each instance of the trainedneural network is to infer, for a given height map of existing paint ona canvas and a respective bristle trajectory map segment representing acorresponding new painting brush stroke segment, a height map segment ofpaint on the canvas after the corresponding new painting brush strokesegment (the respective bristle trajectory map segment representing thecorresponding new painting brush stroke segment) is applied to thecanvas. That is, each instance of the trained neural network infers thenew paint segment on the canvas resulting from applying a new paintingbrush stroke segment to the paint that was on the canvas prior to thenew painting brush stroke segment.

Simulating oil painting brush strokes using trained neural networksproduces higher quality representations of the 3D surface details ofbrush strokes without the use of complex fluid simulation. Accordingly,oil painting simulation applications that simulate painting brushstrokes using trained neural networks are suitable for execution oncomputing devices, such as mobile computers and mobile devices, whichmay not possess sufficient computing power to perform fluid simulation.Although the embodiments and/or examples are described below in thecontext of oil paints and oil paintings, it will be appreciated in lightof this disclosure that the embodiments and/or examples are notrestricted to oil paints and oil paintings but are also applicable tothick paints, such as acrylics, and gouache, to name a few examples, inthe general sense.

FIG. 1 is a diagram 100 illustrating example components for generatingtraining data for a neural network, in accordance with at least someembodiments described herein. The generated training data is utilized totrain a neural network to, provided a first height map of existing painton the canvas and a bristle trajectory map as inputs, infer a secondheight map of existing paint on the canvas after a new painting brushstroke is applied. The bristle trajectory map input to the neuralnetwork represents the new brush stroke. As shown in diagram 100, thecomponents for generating the training data for a neural network includea simulator 102, a height map 104, and a painting brush stroke 106(interchangeably referred to herein as a “brush stroke 106” unlesscontext dictates otherwise).

In some embodiments, simulator 102 is an oil painting simulationapplication that simulates the texture of oil paints, and the operationof the bristles of a paint brush to smear the oil paint across a digitalcanvas (interchangeably referred to herein as a “canvas”, unless contextdictates otherwise). In some instances, simulator 102 may utilize fluidsimulation to simulate the individual bristles (e.g., thousands ofindividual bristles) of a paint brush, and the interactions among thebristles of the paint brush to generate a 3D model of the paint brush.The 3D model of the paint brush is used to interact with the paintmedium to simulate the physical dynamics of the paint on the canvas.Simulator 102 may allow users (e.g., artists) to interact with simulatedoil paints using a stylus on a touchscreen.

Height map 104 is a representation of existing paint on the canvas.Height map 104 represents the thickness of the paint that exists on thecanvas. In some embodiments, height map 104 may be represented as a 2Dimage, for example, in 512 pixel×512 pixel resolution. As will beappreciated in light of this disclosure, other image resolutions may beused by height map 104 to represent the thickness of the paint thatexists on the canvas. In some examples cases, the value at each pixellocation of height map 104 represents the thickness of the paint at thatpixel location. For example, if a value at a pixel location of heightmap 104 is zero (pixel value=0), then the thickness of the paint at thatpixel location in height map 104 is 0 mm. If a value at a pixel locationof height map 104 is one (pixel value=1), then the thickness of thepaint at that pixel location in the height map is 1 mm. Similarly, apixel value of 1.5 may indicate that thickness of the paint at thatpixel location in height map 104 is 1.5 mm. In some embodiments, heightmap 104 (height map of existing paint on the canvas) that is input tosimulator 102 to generate the training data for the neural network israndomly generated. That is, a randomly generated height map 104 isprovided to simulator 102 for generating the training data for theneural network. For example, height map 104 can be generated by randomlyrotating and/or overlaying brush stroke samples from a repository tomimic a random painting process.

Brush stroke 106 is a motion made by a paint brush during painting. Forexample, an artist typically paints stroke-by-stroke using a paintbrush. Brush stroke 106 is a representation of one stroke (paintingbrush stroke motion) that would be made by the artist when painting.Brush stroke 106 may be one painting brush stroke selected from a corpusof painting brush strokes 106.

A brush stroke sample repository 108 may include or store the corpus ofpainting brush strokes. In some example cases, painting brush strokesgenerated by a user or users may be recorded, and the data correspondingto the recorded painting brush strokes (e.g., brush stroke data) may bemaintained in brush stroke sample repository 108. Some or all of thebrush strokes 106 (brush stroke data) may be used in generating thetraining data to train a neural network. In some embodiments, therecorded brush strokes 106 may be randomly rotated and/or combined togenerate additional brush strokes 106.

Height map 104 (height map of existing paint on the canvas) and brushstroke 106 are provided as inputs to simulator 102, and simulator 102generates a ground truth 110 and a bristle trajectory 112(interchangeably referred to herein as a “bristle trajectory map”).Ground truth 110 is a height map of existing paint on the canvas afterthe brush stroke is applied to the canvas (e.g., applied to the existingpaint on the canvas). That is, ground truth 110 is the height map ofexisting paint on the canvas after applying a new brush stroke (e.g.,brush stroke 106 provided as input to simulator 102) to the height mapthat existed prior to applying the new brush stroke (e.g., height map104 provided as input to simulator 102). In some embodiments, simulator102 utilizes fluid simulation to generate ground truth 110.

Bristle trajectory map 112 is a representation of a trail of the bristletips (e.g., all the bristle tips) of a paint brush generated as a resultof brush stroke 106. For example, when a paint brush is swept along apath on the canvas, the tips of the bristles of the paint brush create atrail of the bristle tips on the canvas. Bristle trajectory map 112 mayconvey or indicate data such as bristle tip direction, bristle tipangle, pressure generated by the bristle tip on the canvas, and thelike. Bristle trajectory map 112 generated by simulator 102 is arepresentation of the trail of the bristle tips of the paint brush thatresults from input brush stroke 106 (brush stroke 106 provided as inputto simulator 102).

Height map 104 provided as input to simulator 102, and bristletrajectory map 112 and ground truth 110 generated by simulator 102 as aresult of the input height map 104, comprise a training data set (e.g.,training data 3-tuple), which is used to train a neural network to infera height map of existing paint on the canvas after a new brush stroke isapplied. Simulator 102 may be utilized to generate a large number oftraining data sets, which may be used to train the neural network. Forexample, a large number of height maps 104 may be randomly generated,and each height map 104 paired with a brush stroke 106, for example,from brush stroke sample repository 108. The pairs of randomly generatedheight maps 104 and brush strokes 106 may then be provided as inputs tosimulator 102 to generate corresponding pairs of ground truths 110 andbristle trajectory maps 112. Each height map 104 input to simulator 102,and the corresponding bristle trajectory map 112 and ground truth 110generated by simulator 102 may comprise a corresponding training dataset, thus resulting in the creation of a large number of training datasets.

FIG. 2 is a diagram 200 illustrating example training data inputs to aneural network 202, in accordance with at least some embodimentsdescribed herein. As shown in diagram 200, a large number, and in somecases a very large number, of training data sets 204 are used to trainneural network 202. Training data sets 204 are used to train neuralnetwork 202 to, provided a height map of existing paint on the canvasand a bristle trajectory map as inputs, infer a height map of existingpaint on the canvas after a new brush stroke is applied. In thisinstance, the bristle trajectory map that is provided as input to neuralnetwork 202 represents the new brush stroke.

Each training data set 204 includes a height map, a bristle trajectorymap, and a ground truth. The height map is a height map of existingpaint on the canvas (height map 104 of FIG. 1) that, along with a brushstroke (brush stroke 106 of FIG. 1), was provided as input to simulator102 to generate the corresponding ground truth (ground truth 110 ofFIG. 1) and the corresponding bristle trajectory map (bristle trajectorymap 112 of FIG. 1). In each training data set 204, the ground truth isthe height map that is expected as a result of applying a new brushstroke (as represented by brush stroke 106 input to simulator 102) onthe existing paint on the canvas (as represented by height map 104included in the training data set and input to simulator 102). Thebristle trajectory map is a representation of a trail of the bristletips of a paint brush that is generated as a result of the new brushstroke. That is, as to each training data 3-tuple, ground truth, heightmap, and bristle trajectory map, a ground truth of a training data3-tuple is the output expected from a neural network trained usingtraining data set 204 when the neural network trained using trainingdata set 204 is provided a height map and a bristle trajectory map ofthe training data 3-tuple as inputs. Once trained, neural network 202 isconfigured to infer a height map of existing paint on the canvas afterapplying a new brush stroke (e.g., a very close if not exactapproximation of ground truth 110 generated by simulator 102 of FIG. 1,and used to train neural network 202) provided a height map of existingpaint on the canvas that existed prior to applying the new brush stroke(height map 104 input to simulator 102 of FIG. 1 to generate groundtruth 110 used to train neural network 202) and a bristle trajectory map(bristle trajectory map 112 generated by simulator 102 of FIG. 1, andused to train neural network 202) as inputs.

FIG. 3 is a block diagram schematically illustrating an example strokegeneration system 300 employing a single neural network 202, inaccordance with at least some embodiments described herein. As depicted,stroke generation system 300 includes a data generation module 302, atrained neural network 202, a height map combiner module 304, and arender module 306. In various embodiments, additional components (notillustrated, such as a processor, display, user input device, etc.) or asubset of the illustrated components can be employed without deviatingfrom the scope of the present disclosure. For instance, otherembodiments may integrate the various functionalities of modules 302,304, and 306, and trained neural network 202 into fewer modules (e.g.,one, two, or three) or more modules (e.g., five or six, or more). Inaddition, further note that the various components of stroke generationsystem 300 may all be in a stand-alone computing system according tosome embodiments, while in others, may be distributed across multiplemachines. For example, each of modules 302, 304, and 306, and trainedneural network 202 can be located in a cloud-based server arrangement,and made accessible to a client-based user interface via acommunications network. In some cases, one or more of modules 302, 304,and 306, and trained neural network 202 may be downloaded from acloud-based service into a browser (or other application) of a clientcomputer for local execution. In a more general sense, the degree ofintegration and distribution of the functional component(s) providedherein can vary greatly from one embodiment to the next, as will beappreciated in light of this disclosure.

In the illustrated example, a user (e.g., an artist) may be using strokegeneration system 300 to create a simulated oil painting on a digitalcanvas. The user may utilize any suitable user interface device, forexample, a user interface (UI) device 308, which facilitates interactionwith stroke generation system 300. In some cases, UI device 308 mayprovide a stylus and touch sensitive screen for use by the user. UIdevice 308 may be coupled to stroke generation system 300, and the usermay use UI device 308 to create a digital oil painting. For example, theuser may use the stylus to input (e.g., generate) digital painting brushstrokes, stroke-by-stroke, on the touch sensitive screen of UI device308.

When the user uses UI device 308 and generates a painting brush stroke(a current painting brush stroke), UI device 308 provides or otherwisemakes available the current painting brush stroke generated by the userto data generation module 302. Data generation module 302 is configuredto generate a bristle trajectory map that represents the currentpainting brush stroke input by the user. In some embodiments, datageneration module 302 generates the bristle trajectory map by sweeping asimulated brush on the canvas and recording the brush bristle contacttrails while the brush is being swept. For example, data generationmodule 302 can generate the bristle trajectory map by drawing the trailsof the brush bristles moving over the length of the brush stroke. Thetrails of the brush bristles may overlap in the bristle trajectory map.Data generation module 302 is also configured to generate a color mapbased on the current painting brush stroke and the current state of thecanvas (e.g., the existing paint on the canvas). For example, datageneration module 302 can generate the color map using one of the manyavailable stamping algorithms. Available stamping algorithms typicallydraw an imprint stamp of a paint brush, for example, at one pixelintervals, along each stroke path. At each stamp, the paint brush coloris mixed with the existing paint color that is on the canvas, and thecanvas color is accordingly updated. The color on the paint brush mayalso be similarly updated to simulate the transfer of color from theexisting paint on the canvas to the paint brush. Data generation module302 has knowledge of the height map of existing paint on the canvas thatresulted from a previous brush stroke (the brush stroke preceding thecurrent brush stroke generated by the user). In the instance where thecurrent painting brush stroke is a first or initial painting brushstroke, the canvas may be a clean canvas in that no paint currentlyexists on the canvas. Where there is no existing paint on the canvas,the height map accordingly indicates that there is no paint currently onthe canvas. Data generation module 302 is configured to provide orotherwise make available the generated bristle trajectory map and theheight map of existing paint on the canvas to trained neural network202. For example, data generation module 302, or another component ofstroke generation system 300, may instantiate an instance of trainedneural network 202 to process the bristle trajectory map and the heightmap of existing paint on the canvas.

Trained neural network 202 is configured to infer a height map of painton the canvas after the current painting brush stroke is applied. Theheight map inferred by trained neural network 202 is a new height mapthat represents the height of the paint that is now on the canvassubsequent to applying the current painting brush stroke, as representedby the bristle trajectory map provided as input to trained neuralnetwork 202, to the paint that existed on the canvas prior toapplication of the current painting brush stroke, as represented by theheight map of existing paint on the canvas provided as input to trainedneural network 202. That is, provided a first height map (a height mapof existing paint on the canvas) and a bristle trajectory map (a currentpainting brush stroke), trained neural network 202 infers a secondheight map (a height map of paint on the canvas after the currentpainting brush stroke is applied). Trained neural network 202 providesor otherwise makes available the inferred height map of paint on thecanvas after the current brush stroke is applied to height map combinermodule 304.

Height map combiner module 304 is configured to combine multiple heightmap segments to generate a single combined height map. Height mapsegments are further discussed below, for example, in conjunction withFIGS. 4 and 5. In this instance, height map combiner module 304determines that the provided height map is a combined height map in thatonly one (a single) height map was provided. As such, height mapcombiner module 304 does not perform any combining operation with theprovided height map. Height map combiner module 304 provides orotherwise makes available the height map of paint on the canvas afterthe current brush stroke is applied to render module 306.

Render module 306 is configured to combine the height map (e.g., heightmap of existing paint on the canvas after the current brush stroke isapplied) and the color map to generate a rendering 310. The color mapmay be provided or otherwise made available by data generation module302. Rendering 310 is a visual representation of the current paintingbrush stroke input by the user on the canvas. That is, rendering 310 isa digital representation of the digital painting brush stroke created bythe user on the touch sensitive screen of UI device 308. In someembodiments, render module 306 can generate rendering 310 by computing anormal map based on the height map using a central difference algorithm.Render module 306 can then compute the illuminance of the paint from thegenerated normal map and lighting data. The lighting data may beprovided by the user using, for example, a point light source, adirectional light source, a spotlight, or any other suitable lightingmodel. Render module 306 can then generate the final colored shadingresult (e.g., rendering 310) based on the computed illuminance and thecolor map, which provides a measure for reflectance or opticalbrightness of the canvas. Rendering 310 of the painting brush strokecreated by the user may be provided on UI device 308, for example, thetouch sensitive screen of UI device 308, for viewing by the user.

FIG. 4 is a block diagram schematically illustrating stroke generationsystem 300 employing multiple instances of trained neural network 202,in accordance with at least some embodiments described herein. Thesystem of FIG. 4 is substantially similar to the system of FIG. 3, withadditional details. Unless context dictates otherwise, those componentsin FIG. 4 that are labelled identically to components of FIG. 3 will notbe described again for the purposes of clarity.

In some embodiments, data generation module 302 is configured to segmenta long bristle trajectory map (e.g., a long painting brush stroke) intomultiple bristle trajectory map segments (e.g., multiple painting brushstroke segments). Processing multiple shorter bristle trajectory mapsegments and combining the results of the processing of the shorterbristle trajectory map segments may provide improved performance ascompared to processing a single long bristle trajectory map. Datageneration module 302 can determine a length of the bristle trajectorymap and, if the length of the bristle trajectory map exceeds a specifiedthreshold bristle trajectory map segment length, segment the bristletrajectory map into multiple bristle trajectory map segments such thatthe length of each bristle trajectory map segment, except the lastbristle trajectory map segment, is of the specified threshold bristletrajectory map segment length. For example, suppose the specifiedthreshold bristle trajectory map segment length is 512 pixels and thelength of the bristle trajectory map is 1,500 pixels. In this case, datageneration module 302 can segment the bristle trajectory map into threebristle trajectory map segments, where two bristle trajectory mapsegments are each of length 512 pixels, and one bristle trajectory mapsegment is of length 476 pixels. The threshold bristle trajectory mapsegment length may be preconfigured, for example, by a provider ofstroke generation system 300. In some embodiments, the threshold bristletrajectory map segment length may be a tunable parameter. For example,the threshold bristle trajectory map segment length may be specified ina configuration file that is accessible by stroke generation system 300,and a user (or system administrator) may tune or adjust the thresholdbristle trajectory map segment length based on the performance of strokegeneration system 300. For example, a user can tune the thresholdbristle trajectory map segment length to achieve a desired performanceof stroke generation system 300.

In some embodiments, data generation module 302 can generate a boundingbox for each bristle trajectory map segment. A bounding box delineatesor defines the bounds (e.g., boundary) of a bristle trajectory mapsegment. For example, a bounding box may be specified by the coordinatesof the four corners of the bounding box. In some embodiments, a boundingbox for a bristle trajectory map segment is generated in a manner as totightly bound the bristle trajectory map segment. That is, the boundingbox is generated such that, within the bounding box, the number ofpixels that do not represent the painting brush stroke segment isreduced or minimized. Minimizing the number of pixels that do notrepresent the painting brush stroke segment in the bounding box resultsin a reduction in computational costs. For example, reducing orminimizing the number of pixels that do not represent a painting brushstroke segment reduces the number of “unnecessary” pixels that need tobe processed by trained neural network 202 in processing the bristletrajectory map segment of the painting brush stroke segment. Eachbristle trajectory map segment represents a respective segment of thecurrent painting brush stroke input by the user.

Data generation module 302 is configured to provide or otherwise makeavailable each bristle trajectory map segment and the height map ofexisting paint on the canvas to a respective trained neural network 202.For example, data generation module 302, or another component of strokegeneration system 300, may instantiate multiple instances of trainedneural network 202, each instance of trained neural network 202 toprocess a respective bristle trajectory map segment and the height mapof existing paint on the canvas. That is, each trained neural network202 of the multiple trained neural networks 202 is provided a respectivebristle trajectory map segment and the height map of existing paint onthe canvas as inputs. Although data generation module 302 is depicted assegmenting a bristle trajectory map into three bristle trajectory mapsegments, the number of bristle trajectory map segments is forillustrative purposes, and a different number of bristle trajectory mapsegments may be generated based on the length of the bristle trajectorymap and the specified bristle trajectory map segment length, as will beappreciated in light of this disclosure.

FIG. 5 is a block diagram schematically illustrating multiple bristletrajectory map segments and corresponding height map segments generatedby multiple trained neural networks 202, in accordance with at leastsome embodiments described herein. As discussed above, each bristletrajectory map segment corresponds to a segment of a bristle trajectorymap, where the bristle trajectory map represents a current paintingbrush stroke. As such, each bristle trajectory map segment is arepresentation of a trail of the bristle tips of a paint brush generatedas a result of a respective current painting brush stroke segment. Eachbristle trajectory map segment is delineated by a bounding box. Eachbristle trajectory map segment is processed by a respective trainedneural network 202, which infers a corresponding height map of paint onthe canvas after the current painting brush stroke segment asrepresented by the bristle trajectory map segment is applied. The heightmap inferred by each trained neural network 202 is a height map segmentthat represents the height of the paint that is now on the canvassubsequent to applying the current painting brush stroke segment to thepaint that existed on the canvas prior to application of the currentpainting brush stroke segment. Similar to the bounding boxes that boundthe bristle trajectory map segments, each height map segment may bedelineated or defined by a bounding box.

Referring again to FIG. 4, each trained neural network 202 provides orotherwise makes available the generated height map segment (the heightmap of paint on the canvas after the current painting brush strokesegment is applied) to height map combiner module 304. Height mapcombiner module 304 combines the multiple height map segments, forexample, provided by respective multiple trained neural networks 202, togenerate a single combined height map. For example, height map combinermodule 304 may combine the multiple height map segments by collaging thenon-overlapping regions of the height map segments, and averaging theheight map values in the overlapping regions of two adjoining height mapsegments.

In some embodiments, each of the multiple bounding boxes is generatedsuch that an overlap region is created between two adjoining boundingboxes. The overlap regions allow for the blending of the height mapsegments that are in the overlap regions to provide continuity of thepainting brush stroke segments when combining two adjoining height mapsegments. In some embodiments, the overlap region is a specified numberof pixels, such as 8 pixels, 16 pixels, 32 pixels, etc., along thegeneral direction or length of the painting brush stroke. That is,between two adjoining height map segments, a respective end of each ofthe two adjoining height map segments overlap for the specified numberof pixels along the general direction or length of the adjoining heightmap segment. The size (e.g., length) of the overlap region maycontribute to the continuity of a resulting height map when adjoiningheight map segments are combined. That is, a large overlap region mayresult in the generation of a more continuous height map as compared toa small overlap region. The size of the overlap region may bepreconfigured, for example, by a provider of stroke generation system300. In some embodiments, the size of the overlap region may be atunable parameter. For example, the size of the overlap region may bespecified in a configuration file that is accessible by strokegeneration system 300, and a user (or system administrator) may tune oradjust the size of the overlap region based on the performance (e.g.,smoothness or other visual characteristic of the rendered painting brushstroke) of stroke generation system 300. For example, a user can tunethe size of the overlap region to achieve a desired smoothness of thepainting brush stroke rendered by stroke generation system 300.

FIG. 6 is a flow diagram 600 illustrating an example process to render anew painting brush stroke, in accordance with at least some embodimentsdescribed herein. Example processes and methods may include one or moreoperations, functions or actions as illustrated by one or more of blocks602, 604, 606, 608, 610, and/or 612, and may in some embodiments beperformed by a computing system such as a computing system 700 of FIG.7. The operations described in blocks 602-612 may also be stored ascomputer-executable instructions in a computer-readable medium, such asa memory 704 and/or a data storage 706 of computing system 700. Theprocess may be performed by components of stroke generation system 300.

As will be further appreciated in light of this disclosure, for this andother processes and methods disclosed herein, the functions performed inthe processes and methods may be implemented in differing order.Additionally or alternatively, two or more operations may be performedat the same time or otherwise in an overlapping contemporaneous fashion.Furthermore, the outlined actions and operations are only provided asexamples, and some of the actions and operations may be optional,combined into fewer actions and operations, or expanded into additionalactions and operations without detracting from the essence of thedisclosed embodiments.

As depicted by flow diagram 600, the process may begin with block 602,where stroke generation system 300 receives a new painting brush stroke.By way of an example use case, a user may be executing stroke generationsystem 300 on a computing device, to create a simulated oil painting ona canvas. Stroke generation system 300 may provide a stylus and a touchsensitive screen for use by the user to create an oil painting, and theuser may have generated a new painting brush stroke on the canvas usingthe provided stylus and touch sensitive screen. In response, datageneration module 302 receives the new painting brush stroke generatedby the user.

Block 602 may be followed by block 604, where data generation module 302generates a color map based on the received new painting brush strokeand a current state of the canvas (e.g., the existing paint on thecanvas).

Block 604 may be followed by block 606, where data generation module 302generates a bristle trajectory map that represents the received newpainting brush stroke.

Block 606 may be followed by block 608, where data generation module 302provides the bristle trajectory map and a height map of existing painton the canvas as inputs to trained neural network 202. Data generationmodule 302 has knowledge of the height map of existing paint on thecanvas by virtue of stroke generation system 300 having processed thepainting brush stroke preceding the current, new painting brush stroke.

Block 608 may be followed by block 610, where trained neural networks202 infers a new height map of existing paint on the canvas based on thebristle trajectory map and the height map of existing paint on thecanvas that was provided as inputs. Continuing the above example, thenew height map inferred by trained neural network 202 is a new heightmap that represents the height of the paint that is now on the canvassubsequent to applying the new painting brush stroke to the canvas.

Block 610 may be followed by block 612, where render module 306generates a rendering of the new painting brush stroke on the canvasbased on the new height map of existing paint on the canvas and thecolor map. Continuing the above example, the rendering of the newpainting brush stroke can be generated on the touch sensitive screen onwhich the user generated the new painting brush stroke.

In some embodiments, additional operations may be performed. Forexample, in some embodiments, data generation module 302 may segment thebristle trajectory map representing the new painting brush stroke intoone or more bristle trajectory map segments based on a specifiedthreshold bristle trajectory map segment length. For example, datageneration module 302 can determine a length of the bristle trajectorymap and, if the length of the bristle trajectory map does not exceed thespecified bristle trajectory map segment length, generate one bristletrajectory map segment from the bristle trajectory map. Alternatively,if the length of the bristle trajectory map exceeds the specifiedthreshold bristle trajectory map segment length, data generation modulecan segment the bristle trajectory map into multiple bristle trajectorymap segments such that the length of each bristle trajectory mapsegment, except the last bristle trajectory map segment, is of thespecified threshold bristle trajectory map segment length. Datageneration module 302 may then provide each bristle trajectory mapsegment and the height map of existing paint on the canvas to arespective trained neural network 202. Each respective trained neuralnetwork 202 can infer a height map segment based on the bristletrajectory map segment and the height map of existing paint on thecanvas that was provided as inputs. A single height map of paintexisting on the canvas can be generated based on the height map segmentsinferred by the multiple trained neural networks 202. For example,height map combiner module 304 can combine the height map segments togenerate the single height map of existing paint on the canvas after thenew painting brush stroke is applied.

FIG. 7 illustrates selected components of example computing system 700that may be used to perform any of the techniques as variously describedin the present disclosure, in accordance with at least some embodimentsdescribed herein. In some embodiments, computing system 700 may beconfigured to implement or direct one or more operations associated withsome or all of the engines, components and/or modules associated withstroke generation system 300 of FIG. 3. For example, data generationmodule 302, trained neural network 202, height map combiner module 304,and render module 306, or any combination of these may be implemented inand/or using computing system 700. In one example case, for instance,each of data generation module 302, trained neural network 202, heightmap combiner module 304, and render module 306 is loaded in memory 704and executable by a processor 702. Computing system 700 may be anycomputer system, such as a workstation, desktop computer, server,laptop, handheld computer, tablet computer (e.g., the iPad® tabletcomputer), mobile computing or communication device (e.g., the iPhone®mobile communication device, the Android™ mobile communication device,and the like), or other form of computing or telecommunications devicethat is capable of communication and that has sufficient processor powerand memory capacity to perform the operations described in thisdisclosure. A distributed computational system may be provided thatincludes a multiple of such computing devices. As depicted, computingsystem 700 may include processor 702, memory 704, and data storage 706.Processor 702, memory 704, and data storage 706 may be communicativelycoupled.

In general, processor 702 may include any suitable special-purpose orgeneral-purpose computer, computing entity, or computing or processingdevice including various computer hardware, firmware, or softwaremodules, and may be configured to execute instructions, such as programinstructions, stored on any applicable computer-readable storage media.For example, processor 702 may include a microprocessor, amicrocontroller, a digital signal processor (DSP), anapplication-specific integrated circuit (ASIC), a Field-ProgrammableGate Array (FPGA), or any other digital or analog circuitry configuredto interpret and/or to execute program instructions and/or to processdata. Although illustrated as a single processor in FIG. 7, processor702 may include any number of processors and/or processor coresconfigured to, individually or collectively, perform or directperformance of any number of operations described in the presentdisclosure. Additionally, one or more of the processors may be presenton one or more different electronic devices, such as different servers.

In some embodiments, processor 702 may be configured to interpret and/orexecute program instructions and/or process data stored in memory 704,data storage 706, or memory 704 and data storage 706. In someembodiments, processor 702 may fetch program instructions from datastorage 706 and load the program instructions in memory 704. After theprogram instructions are loaded into memory 704, processor 702 mayexecute the program instructions.

For example, in some embodiments, any one or more of the engines,components and/or modules of stroke generation system 300 may beincluded in data storage 706 as program instructions. Processor 702 mayfetch some or all of the program instructions from data storage 706 andmay load the fetched program instructions in memory 704. Subsequent toloading the program instructions into memory 704, processor 702 mayexecute the program instructions such that the computing system mayimplement the operations as directed by the instructions.

In some embodiments, virtualization may be employed in computing device700 so that infrastructure and resources in computing device 700 may beshared dynamically. For example, a virtual machine may be provided tohandle a process running on multiple processors so that the processappears to be using only one computing resource rather than multiplecomputing resources. Multiple virtual machines may also be used with oneprocessor.

Memory 704 and data storage 706 may include computer-readable storagemedia for carrying or having computer-executable instructions or datastructures stored thereon. Such computer-readable storage media mayinclude any available media that may be accessed by a general-purpose orspecial-purpose computer, such as processor 702. By way of example, andnot limitation, such computer-readable storage media may includenon-transitory computer-readable storage media including Random AccessMemory (RAM), Read-Only Memory (ROM), Electrically Erasable ProgrammableRead-Only Memory (EEPROM), Compact Disc Read-Only Memory (CD-ROM) orother optical disk storage, magnetic disk storage or other magneticstorage devices, flash memory devices (e.g., solid state memorydevices), or any other storage medium which may be used to carry orstore particular program code in the form of computer-executableinstructions or data structures and which may be accessed by ageneral-purpose or special-purpose computer. Combinations of the abovemay also be included within the scope of computer-readable storagemedia. Computer-executable instructions may include, for example,instructions and data configured to cause processor 702 to perform acertain operation or group of operations.

Modifications, additions, or omissions may be made to computing system700 without departing from the scope of the present disclosure. Forexample, in some embodiments, computing system 700 may include anynumber of other components that may not be explicitly illustrated ordescribed herein.

As indicated above, the embodiments described in the present disclosuremay include the use of a special purpose or a general purpose computer(e.g., processor 702 of FIG. 7) including various computer hardware orsoftware modules, as discussed in greater detail herein. As will beappreciated, once a general purpose computer is programmed or otherwiseconfigured to carry out functionality according to an embodiment of thepresent disclosure, that general purpose computer becomes a specialpurpose computer. Further, as indicated above, embodiments described inthe present disclosure may be implemented using computer-readable media(e.g., memory 704 of FIG. 7) for carrying or having computer-executableinstructions or data structures stored thereon.

Numerous example variations and configurations will be apparent in lightof this disclosure. According to some examples, computer-implementedmethods to simulate a painting brush stroke are described. An examplecomputer-implemented method may include: inferring, by a trained neuralnetwork having a first input to receive a bristle trajectory map thatrepresents a new painting brush stroke and a second input to receive afirst height map of existing paint on a canvas, a second height map ofexisting paint on the canvas after the new painting brush stroke isapplied to the canvas; and generating, by a render module, a renderingof the new painting brush stroke based on the second height map ofexisting paint on the canvas after the new painting brush stroke isapplied to the canvas and a color map.

In some examples, the trained neural network is trained using multipletraining data sets, each training data set of the multiple training datasets including a height map, a bristle trajectory map, and a groundtruth. In other examples, for each training data set, the bristletrajectory map and the ground truth are generated by a simulator inresponse to being provided the height map as an input. In still otherexamples, the simulator utilizes fluid simulation to generate the groundtruth. In yet other examples, the bristle trajectory map is a bristletrajectory map segment that represents a new painting brush strokesegment, and further wherein the second height map is a second heightmap segment of existing paint on the canvas after the new painting brushstroke segment is applied to the canvas. In other examples, the bristletrajectory map segment is delineated by a bounding box, or the secondheight map segment is delineated by a bounding box, or both the bristletrajectory map segment and the second height map segment are delineatedby a respective bounding box. In still other examples, the new paintingbrush stroke is a new oil painting brush stroke. In still furtherexamples, the trained neural network is one of multiple trained neuralnetworks, each trained neural network of the multiple trained networkshaving a respective first input to receive a respective bristletrajectory map segment that represents a new painting brush strokesegment and a respective second input to receive a first height map ofexisting paint on a canvas, and the inferring is carried out by themultiple trained neural networks such that each trained neural networkis configured to infer a respective second height map segment ofexisting paint on the canvas after the new painting brush stroke isapplied to the canvas, the method further including: generating, by aheight map combiner module, a combined second height map based on therespective second height map segment inferred by each trained neuralnetwork of the multiple trained neural networks, wherein generating, bythe render module, a rendering of the new painting brush stroke is basedon the combined second height map.

According to some examples, computer program products including one ormore non-transitory machine readable mediums encoded with instructionsthat when executed by one or more processors cause a process to becarried out to simulate a painting brush stroke are described. Anexample process may include: inferring, by a trained neural networkhaving a first input to receive a bristle trajectory map that representsa new painting brush stroke and a second input to receive a first heightmap of existing paint on a canvas, a second height map of existing painton the canvas after the new painting brush stroke is applied to thecanvas; and generating a rendering of the new painting brush strokebased on the second height map of existing paint on the canvas after thenew painting brush stroke is applied to the canvas and a color map.

In some examples, the trained neural network is trained using multipletraining data sets, each training data set of the multiple training datasets including a height map, a bristle trajectory map, and a groundtruth. In other examples, for each training data set, the bristletrajectory map and the ground truth are generated by a simulator inresponse to being provided the height map as an input. In still otherexamples, the simulator utilizes fluid simulation to generate the groundtruth. In yet other examples, the bristle trajectory map is a bristletrajectory map segment that represents a new painting brush strokesegment, and further wherein the second height map is a second heightmap segment of existing paint on the canvas after the new painting brushstroke segment is applied to the canvas. In other examples, the bristletrajectory map segment is delineated by a bounding box, or the secondheight map segment is delineated by a bounding box, or both the bristletrajectory map segment and the second height map segment are delineatedby a respective bounding box. In still other examples, the new paintingbrush stroke is a new oil painting brush stroke. In still furtherexamples, the trained neural network is one of multiple trained neuralnetworks, each trained neural network of the multiple trained neuralnetworks having a respective first input to receive a respective bristletrajectory map segment that represents a new painting brush strokesegment and a respective second input to receive a first height map ofexisting paint on a canvas, and the inferring is carried out by themultiple trained neural networks such that each trained neural networkis configured to infer a respective second height map segment ofexisting paint on the canvas after the new painting brush stroke segmentis applied to the canvas, the process further including: generating acombined second height map based on the respective second height mapsegment inferred by each trained neural network of the multiple trainedneural networks, wherein generating a rendering of the new paintingbrush stroke is based on the combined second height map.

According to some examples, systems to simulate a painting brush strokeare described. An example system may include: one or more processors;one or more trained neural networks, each trained neural network atleast one of controllable and executable by the one or more processors,each trained neural network having a first input to receive a respectivebristle trajectory map segment that represents a new painting brushstroke segment and a second input to receive a first height map ofexisting paint on a canvas, each neural network configured to infer arespective second height map segment of existing paint on the canvasafter the new painting brush stroke is applied to the canvas; a heightmap combiner module at least one of controllable and executable by theone or more processors, and configured to generate a height map based onthe respective second height map segment inferred by each trained neuralnetwork; and a render module at least one of controllable and executableby the one or more processors, and configured to generate a rendering ofthe new painting brush stroke based on the second height map of existingpaint on the canvas after the new painting brush stroke is applied tothe canvas and a color map.

In some examples, each trained neural network is trained using multipletraining data sets, each training data set of the multiple training datasets including a height map, a bristle trajectory map, and a groundtruth. In other examples, for each training data set, the bristletrajectory map and the ground truth are generated by a simulator inresponse to being provided the height map as an input. In still otherexamples, the bristle trajectory map segment is delineated by a boundingbox, or the second height map segment is delineated by a bounding box,or the bristle trajectory map segment and the second height map segmentare delineated by a respective bounding box.

As used in the present disclosure, the terms “engine” or “module” or“component” may refer to specific hardware implementations configured toperform the actions of the engine or module or component and/or softwareobjects or software routines that may be stored on and/or executed bygeneral purpose hardware (e.g., computer-readable media, processingdevices, etc.) of the computing system. In some embodiments, thedifferent components, modules, engines, and services described in thepresent disclosure may be implemented as objects or processes thatexecute on the computing system (e.g., as separate threads). While someof the system and methods described in the present disclosure aregenerally described as being implemented in software (stored on and/orexecuted by general purpose hardware), specific hardwareimplementations, firmware implements, or any combination thereof arealso possible and contemplated. In this description, a “computingentity” may be any computing system as previously described in thepresent disclosure, or any module or combination of modulates executingon a computing system.

Terms used in the present disclosure and in the appended claims (e.g.,bodies of the appended claims) are generally intended as “open” terms(e.g., the term “including” should be interpreted as “including, but notlimited to,” the term “having” should be interpreted as “having atleast,” the term “includes” should be interpreted as “includes, but isnot limited to,” etc.).

Additionally, if a specific number of an introduced claim recitation isintended, such an intent will be explicitly recited in the claim, and inthe absence of such recitation no such intent is present. For example,as an aid to understanding, the following appended claims may containusage of the introductory phrases “at least one” and “one or more” tointroduce claim recitations. However, the use of such phrases should notbe construed to imply that the introduction of a claim recitation by theindefinite articles “a” or “an” limits any particular claim containingsuch introduced claim recitation to embodiments containing only one suchrecitation, even when the same claim includes the introductory phrases“one or more” or “at least one” and indefinite articles such as “a” or“an” (e.g., “a” and/or “an” should be interpreted to mean “at least one”or “one or more”); the same holds true for the use of definite articlesused to introduce claim recitations.

In addition, even if a specific number of an introduced claim recitationis explicitly recited, such recitation should be interpreted to mean atleast the recited number (e.g., the bare recitation of “two widgets,”without other modifiers, means at least two widgets, or two or morewidgets). Furthermore, in those instances where a convention analogousto “at least one of A, B, and C, etc.” or “one or more of A, B, and C,etc.” is used, in general such a construction is intended to include Aalone, B alone, C alone, A and B together, A and C together, B and Ctogether, or A, B, and C together, etc.

All examples and conditional language recited in the present disclosureare intended for pedagogical objects to aid the reader in understandingthe present disclosure and the concepts contributed by the inventor tofurthering the art, and are to be construed as being without limitationto such specifically recited examples and conditions. Althoughembodiments of the present disclosure have been described in detail,various changes, substitutions, and alterations could be made heretowithout departing from the spirit and scope of the present disclosure.Accordingly, it is intended that the scope of the present disclosure belimited not by this detailed description, but rather by the claimsappended hereto.

What is claimed is:
 1. A computer-implemented method to simulate apainting brush stroke, the method comprising: inferring, by a trainedneural network having (i) a first input configured to receive a bristletrajectory map that represents a new painting brush stroke and (ii) asecond input configured to receive a first height map of existing painton a canvas, a second height map of existing paint on the canvas afterthe new painting brush stroke is applied to the canvas, wherein thefirst height map of existing paint on the canvas is indicative of, forat least a pixel location, a thickness of the existing paint for thepixel location that extends above the canvas surface in the z-directionbefore the new painting brush stroke is applied to the canvas; andgenerating, by a render module, a rendering of the new painting brushstroke based on the second height map of existing paint on the canvasafter the new painting brush stroke is applied to the canvas and a colormap.
 2. The method of claim 1, wherein the trained neural network istrained using a plurality of training data sets, each training data setof the plurality of training data sets comprising a height map, abristle trajectory map, and a ground truth.
 3. The method of claim 2,wherein, for each training data set, the bristle trajectory map and theground truth are generated by a simulator in response to being providedthe height map as an input.
 4. The method of claim 3, wherein thesimulator utilizes fluid simulation to generate the ground truth.
 5. Themethod of claim 1, wherein the bristle trajectory map is a bristletrajectory map segment that represents a new painting brush strokesegment, and further wherein the second height map is a second heightmap segment of existing paint on the canvas after the new painting brushstroke segment is applied to the canvas.
 6. The method of claim 5,wherein the bristle trajectory map segment is delineated by a boundingbox, or the second height map segment is delineated by a bounding box,or both the bristle trajectory map segment and the second height mapsegment are delineated by a respective bounding box.
 7. The method ofclaim 1, wherein the new painting brush stroke is a new oil paintingbrush stroke.
 8. The method of claim 1, wherein the trained neuralnetwork is one of a plurality of trained neural networks, each trainedneural network of the plurality of trained neural networks having arespective first input configured to receive a respective bristletrajectory map segment that represents a new painting brush strokesegment and a respective second input configured to receive a firstheight map of existing paint on a canvas, and the inferring is carriedout by the plurality of trained neural networks such that each trainedneural network is configured to infer a respective second height mapsegment of existing paint on the canvas after the new painting brushstroke segment is applied to the canvas, the method further comprising:generating, by a height map combiner module, a combined second heightmap based on the respective second height map segment inferred by eachtrained neural network of the plurality of trained neural networks,wherein generating, by the render module, a rendering of the newpainting brush stroke is based on the combined second height map.
 9. Themethod of claim 8, wherein a length of each bristle trajectory mapsegment is based on a threshold bristle trajectory map segment length.10. A computer program product including one or more non- transitorymachine readable mediums encoded with instruction that when executed byone or more processors cause a process to be carried out to renderpainting brush strokes, the process comprising: receiving a new paintingbrush stroke; generating a plurality of bristle trajectory map segments,each bristle trajectory map segment representing a corresponding sectionof the new painting brush stroke; receiving, by each of a plurality oftrained neural networks, (i) a corresponding bristle trajectory mapsegment of the plurality of bristle trajectory map segments and (ii) afirst height map of existing paint on a canvas prior to application ofthe new painting brush stroke; inferring, by each of the plurality oftrained neural networks, a corresponding second height map segment ofexisting paint on the canvas subsequent to application of the newpainting brush stroke, such that a plurality of second height mapsegments are generated by the plurality of trained neural networks;generating a combined second height map based on the plurality of secondheight map segments, wherein the combined second height map isindicative of, for at least a pixel location, a thickness of the paintfor the pixel location in a direction that is substantiallyperpendicular to a plane of the canvas, the thickness being subsequentto application of the new painting brush stroke; and generating arendering of the new painting brush stroke based on the combined secondheight map.
 11. The computer program product of claim 10, wherein theprocess further comprises: training at least one of the plurality oftrained neural networks using a plurality of training data sets, eachtraining data set of the plurality of training data sets comprising atraining height map, a training bristle trajectory map, and a groundtruth.
 12. The computer program product of claim 11, wherein the processfurther comprises: for each training data set, generating, using asimulator, the training bristle trajectory map and the ground truth, inresponse to being provided the training height map as an input.
 13. Thecomputer program product of claim 12, wherein to generate the groundtruth, the process further comprises: utilizing fluid simulation togenerate the ground truth.
 14. The computer program product of claim 10,wherein a particular one of the bristle trajectory map segments isdelineated by a first bounding box, or a particular one of the secondheight map segments is delineated by a second bounding box, or both theparticular one of the bristle trajectory map segments and the particularone of the second height map segments are delineated by respective firstand second bounding boxes.
 15. The computer program product of claim 10,wherein the new painting brush stroke is a new oil painting brushstroke.